package com.demo.exception.utils.verification;


import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**验证是否是正确的电话号码 也可判定是否为空  作用于string 类型 判定范围为中国电话号码
 * Target(): 可使用范围  常用部分参数 METHOD 方法  FIELD字段 ANNOTATION_TYPE 注解 PARAMETER 参数 Type 类
 * ElementType.TYPE：能修饰类、接口或枚举类型
 * ElementType.FIELD：能修饰成员变量
 * ElementType.METHOD：能修饰方法
 * ElementType.PARAMETER：能修饰参数
 * ElementType.CONSTRUCTOR：能修饰构造器
 * ElementType.LOCAL_VARIABLE：能修饰局部变量
 * ElementType.ANNOTATION_TYPE：能修饰注解
 * ElementType.PACKAGE：能修饰包
 * Retention(): 定义被它所注解的注解保留多久 RUNTIME 注解不仅被保存到class文件中，jvm加载class文件之后，仍然存在
 * Constraint(): 处理逻辑是IsPhoneValidation类 自定义校验逻辑
 * @author 小乌龟
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {IsPhoneValidation.class})
public @interface IsPhone {
    /**
     *错误默认信息
     */
    String message() default "手机号格式错误";

    /**
     *支持分组校验
     */
    Class<?>[] groups() default {};


    Class<? extends Payload>[] payload() default {};
}
